package com.yang.utils;

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;

//导入可选配置类
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;

// 导入对应SMS模块的client
import com.tencentcloudapi.sms.v20210111.SmsClient;

// 导入要请求接口对应的request response类
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import com.tencentcloudapi.sms.v20210111.models.SendStatus;
import org.springframework.stereotype.Component;

/**
 * @author yangdacheng
 * @title: SendTelUtils 短信发送
 * @projectName note_api
 * @description: TODO
 * @date 2022/3/7 9:20 上午
 */
@Component
public class SendTelUtils {

    private static String secretId = "AKIDVnpa4IGxNWOzJM9gwvAAtQgfNoytXu0p";
    private static String secretKey = "ZtxkIZZIkwrVsynLccMo0wbz6wV5SaS3";
    private static String sdkAppId = "1400641693";
    private static String signName = "粉红猪个人网";
    private static SendStatus sendStatus = null;

    /**
     *
     * @param templateId  模板编号
     * @param telNumber 电话 +86130xxx
     * @param templateParamSet 模板参数
     * @return
     */
    public SendStatus SendCode(String templateId,String telNumber,String[] templateParamSet){
        try {
            Credential cred = new Credential(secretId, secretKey);
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setReqMethod("POST");
            httpProfile.setConnTimeout(60);
            httpProfile.setEndpoint("sms.tencentcloudapi.com");
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setSignMethod("HmacSHA256");
            clientProfile.setHttpProfile(httpProfile);
            SmsClient client = new SmsClient(cred, "ap-guangzhou",clientProfile);
            SendSmsRequest req = new SendSmsRequest();
            /* 短信应用ID: 短信SdkAppId在 [短信控制台] 添加应用后生成的实际SdkAppId，示例如1400006666 */
            req.setSmsSdkAppId(sdkAppId);
            /* 短信签名内容: 使用 UTF-8 编码，必须填写已审核通过的签名，签名信息可登录 [短信控制台] 查看 */
            req.setSignName(signName);
            /* 模板 ID: 必须填写已审核通过的模板 ID。模板ID可登录 [短信控制台] 查看 */
            req.setTemplateId(templateId);
            /* 下发手机号码，采用 E.164 标准，+[国家或地区码][手机号]
             * 示例如：+8613711112222， 其中前面有一个+号 ，86为国家码，13711112222为手机号，最多不要超过200个手机号 */
            String[] phoneNumberSet = {telNumber};
            req.setPhoneNumberSet(phoneNumberSet);
            /* 模板参数: 若无模板参数，则设置为空 */
            req.setTemplateParamSet(templateParamSet);
            /* 通过 client 对象调用 SendSms 方法发起请求。注意请求方法名与请求对象是对应的
             * 返回的 res 是一个 SendSmsResponse 类的实例，与请求对象对应 */
            SendSmsResponse res = client.SendSms(req);
            // 输出json格式的字符串回包
            SendStatus[] sendStatusSet = res.getSendStatusSet();
            System.out.println(SendSmsResponse.toJsonString(res));
            sendStatus = sendStatusSet[0];
        } catch (TencentCloudSDKException e) {
            e.printStackTrace();
        }
        return sendStatus;
    }
}
